1 /*
2 * Scope: a generic MVC framework.
3 * Copyright (c) 2000-2002, The Scope team
4 * All rights reserved.
5 *
6 *
7 * Redistribution and use in source and binary forms, with or without
8 * modification, are permitted provided that the following conditions
9 * are met:
10 *
11 * Redistributions of source code must retain the above copyright
12 * notice, this list of conditions and the following disclaimer.
13 *
14 * Redistributions in binary form must reproduce the above copyright
15 * notice, this list of conditions and the following disclaimer in the
16 * documentation and/or other materials provided with the distribution.
17 *
18 * Neither the name "Scope" nor the names of its contributors
19 * may be used to endorse or promote products derived from this software
20 * without specific prior written permission.
21 *
22 *
23 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
24 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
25 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
26 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR
27 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
28 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
29 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
30 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
31 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
32 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
33 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
34 *
35 *
36 * $Id: LocalizedException.java,v 1.5 2002/09/05 15:41:46 ludovicc Exp $
37 */
38 package org.scopemvc.util;
39
40
41 import java.text.MessageFormat;
42 import org.apache.commons.logging.Log;
43 import org.apache.commons.logging.LogFactory;
44
45 /***
46 * <P>
47 *
48 * An Exception that implements {@link #getLocalizedMessage} by looking up its
49 * message as an ID that is looked up in {@link org.scopemvc.util.UIStrings
50 * UIStrings} to present the user with a localised message: message parameters
51 * passed in are substituted in the message as java.text.MessageFormat. </P>
52 *
53 * @author <A HREF="mailto:smeyfroi@users.sourceforge.net">Steve Meyfroidt</A>
54 * @created 05 September 2002
55 * @version $Revision: 1.5 $ $Date: 2002/09/05 15:41:46 $
56 */
57 public class LocalizedException extends Exception {
58
59 private final static Log LOG = LogFactory.getLog(LocalizedException.class);
60
61 private Object[] messageParameters;
62
63
64 /***
65 * Create with a message id, but no message parameters.
66 *
67 * @param inMessageID a message ID that identifies the localised
68 * user-readable message in {@link org.scopemvc.util.UIStrings
69 * UIStrings}
70 */
71 public LocalizedException(String inMessageID) {
72 this(inMessageID, null);
73 }
74
75
76 /***
77 * Create with a message id and one message parameter.
78 *
79 * @param inMessageID a message ID that identifies the localised
80 * user-readable message in {@link org.scopemvc.util.UIStrings
81 * UIStrings}
82 * @param inMessageParameter one parameter to be substituted in the message
83 * as {@link java.text.MessageFormat}
84 */
85 public LocalizedException(String inMessageID, Object inMessageParameter) {
86 super(inMessageID);
87 messageParameters = new Object[]{inMessageParameter};
88 }
89
90
91 /***
92 * Create with a message id and message parameters.
93 *
94 * @param inMessageID a message ID that identifies the localised
95 * user-readable message in {@link org.scopemvc.util.UIStrings
96 * UIStrings}
97 * @param inMessageParameters a set of parameters to be substituted in the
98 * message as {@link java.text.MessageFormat}
99 */
100 public LocalizedException(String inMessageID, Object[] inMessageParameters) {
101 super(inMessageID);
102 messageParameters = inMessageParameters;
103 }
104
105
106 /***
107 * Use the message as an ID to a message pattern in the {@link
108 * org.scopemvc.util.UIStrings UIStrings} and use {@link
109 * java.text.MessageFormat} to format it with the message parameters.
110 *
111 * @return The localizedMessage value
112 */
113 public final String getLocalizedMessage() {
114 String messagePattern = UIStrings.get(getMessage());
115 if (messagePattern == null) {
116 LOG.error("Got null UIString for: " + getMessage());
117 messagePattern = "";
118 }
119 return MessageFormat.format(messagePattern, messageParameters);
120 }
121 }
122
This page was automatically generated by Maven